package com.tianjin.design.factory.simple;

/**
 *
 * @author tianjin
 *
 * 2023年4月4日
 * TODO
 *
 * 简单工厂模式：
 * 版本一：
 * 1、 我想要苹果或者香蕉，只需要通过new直接创建即可，这里的想要某种水果就是一类业务
 *
 * 版本二：
 * 1、苹果、香蕉属于同类，且行为方式一样，可以考虑向上抽取抽象类，以消除重复代码，此时声明Fruit抽象类
 *
 * 版本三：
 * 1、获取苹果、香蕉时，客户端还需要明确获取的类型，并且给对象设置名称，假设感觉此操作比较复杂，此时准备引入工厂；
 * 2、创建水果工厂类 FruitFactory;
 * 3、此时为简单工厂也称为静态工厂，因为这个工厂只允许创建Fruit，且
 */
public class Test {

	public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {

		// 版本一
//		Apple apple = new Apple();
//		apple.setName("apple");
//		apple.get();
//
//		Banana banana = new Banana();
//		banana.setName("banana");
//		banana.get();

		// 版本二
//		Fruit apple = new Apple();
//		apple.setName("apple");
//		apple.get();
//
//		Fruit banana = new Banana();
//		banana.setName("banana");
//		banana.get();

		// 版本三
		Object apple = Class.forName("Apple").newInstance();
//		Fruit apple = FruitFactory.createFruit("Apple");
//		apple.get();
	}
}
